热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

19|防火墙:如何和黑客“划清界限”?

黑客在网络攻击时,第一步会扫描系统对外开放的端口,尝试发起连接或者攻击。比如,黑客可以扫描公司公网IP的22端口(SSH服务

在这里插入图片描述

黑客在网络攻击时,第一步会扫描系统对外开放的端口,尝试发起连接或者攻击。比如,黑客可以扫描公司公网 IP 的 22 端口(SSH 服务),然后尝试爆破登录。这个时候,通过防火墙,我们既可以屏蔽掉开放的 22 端口,也能拦截爆破的请求。所以,防火墙是面对外部入侵的第一道防线。

当然,这只是个简单的例子,现实中黑客的攻击手段更多,攻击场景也更加复杂。那这个时候,防火墙是如何为系统和网络提供保护的呢?具体来说,防火墙能够拦截哪些攻击呢?它的盲区又是什么呢?今天,我们就一起来学习,如何通过防火墙进行安全防护。

防火墙如何为网络提供保护?

你对防火墙应该不陌生。为了咱们统一一下思想,方便学习后面的内容,这里我还是再和你啰嗦几句。

防火墙是部署在网络边界上的一种安全设备,其概念比较宽泛,根据需求不同可以工作在 OSI(Open System Interconnection,开放式系统互联) 网络模型的一层或多层上。一般情况下,防火墙会和路由器搭配使用(或者说路由器能够承担部分防火墙的功能),来对网络进行隔离。

根据实现方式和功能的不同,防火墙可以分为三种类型:包过滤防火墙、应用网关防火墙和状态检测防火墙。不同的防火墙在性能和防护能力上都有各自的特点,适用于不同的场景。下面我们一一来看。

1. 包过滤防火墙

包过滤防火墙工作在网络层和传输层上。在这两个层级中,网络请求都是以 TCP 或者 UDP 数据包的形式进行流动的。因此,包过滤防火墙是通过检测并拦截所有流经防火墙的 TCP 和 UDP 数据包,来对系统提供保护。它能够获取到的信息包括:源 IP 和端口、目标 IP 和端口、协议号等。由于大部分的路由器甚至 Linux 系统本身(Iptables)也具备类似的功能。因此,通常情况下,我们不需要采购额外的设备部署包过滤防火墙,只需要直接对网络边界的路由器进行设置,就能够满足最基本的拦截需求了。

但是,在防护能力上,包过滤防火墙是比较弱的,它只能提供最基础的安全防护。这是因为,包过滤防火墙的过滤规则基本都是静态的。也就是说,包过滤防火墙只能够通过匹配 IP 地址和端口号,判断这些信息是否命中特定的规则来进行过滤。比如,禁止外网 IP 访问 80 和 443 以外的公司 IP 端口。所以,现在大部分的包过滤防火墙都进行了升级,引入了诸如“连接状态”等概念,也就变成了状态检测防火墙。

2. 应用网关防火墙

应用网关防火墙以代理的模式工作在应用层。所谓“代理”,即接收客户端发出的请求,然后以客户端的身份将请求再发往服务端。大部分的系统和应用都是工作在应用层的,因此,应用网关防火墙能够获取到系统和应用的全部信息,从而实现更复杂的功能,如:内容监控、认证、协议限制甚至缓存。

在包过滤防火墙中,防火墙直接对流经的 TCP 和 UDP 包进行处理。而应用网关防火墙需要对 TCP 和 UDP 包进行解析,处理成应用层的数据协议,如 HTTP。因此应用网关防火墙对于网络的性能会产生负面影响,而且不是所有的应用都能够很好地兼容代理的存在,所以部署应用网关防火墙有可能对系统的可用性产生影响。除此之外,在应用网关防火墙中,服务端看到的请求都来自于代理,这会导致服务端无法有效地追踪请求的来源。

尽管应用网关防火墙有这些潜在的危害存在,但是它能处理的信息最多,能够提供的安全防护能力也最强。由于 Web 攻击是黑客常见的攻击手段,因此,应用网关防火墙也逐渐演变成了专门的 Web 防火墙,在之后的课程中,我们会详细介绍,这里暂时就不多说啦。

3. 状态检测防火墙

状态检测防火墙是包过滤防火墙的一种升级,它同样工作在网络层和传输层之上。状态检测和包过滤防火墙最大的不同在于,它会以连接的形式来“看待”低层级的 TCP 和 UDP 数据包。怎么理解呢?我来举个简单的例子。

当客户端发起一次完整的 HTTP 请求时,会需要进行“TCP 三次握手”建立连接(SYN+ACK 数据包),HTTP 请求和响应的数据往往也是通过多个数据包才能完整发送。传统的包过滤防火墙只能基于每一个数据包进行判断,比如在“握手”的过程中,包过滤防火墙会分别看到 SYN、SYN+ACK、ACK 这三个数据包,并对每一个数据包进行判断。而事实上,这三个数据包(SYN、SYN+ACK、ACK)代表的是一次握手请求。所以,状态检测防火墙会尝试将这一连串的数据包组成一次完整的连接请求,从而获得一个更全面的视角,大大提高其安全性。

对比应用网关防火墙,状态检测防火墙通常不会尝试将数据包构建成高层级的数据,也就是说它不会尝试去解析整个 HTTP 请求中的内容。因此,状态检测防火墙能获得更优的性能。目前市面上普遍采用的,都是状态检测防火墙。
在这里插入图片描述

防火墙可以为网络边界提供哪些保护呢?

网络边界之间的信用层级通常是不一样的,因此,我们需要利用防火墙在网络边界上提供必要的保护,使得跨越边界的数据和连接相对可信。那防火墙究竟可以为网络边界提供哪些保护呢?下面,我就详细来讲一讲。

1. 保护操作系统的漏洞

在操作系统的发展历程中,出现过很多臭名昭著的漏洞。比如:由于对网络请求处理不当,导致的 DDoS 攻击(如死亡之 PING、SYN 洪泛等);由于高危服务默认开放导致的代码执行(如熊猫烧香扫描的是 135 和 445 端口的弱密钥);由于服务漏洞导致的代码执行(如永恒之蓝利用的 SMB 漏洞)。

如果在这些漏洞曝光时,我们能即时更新操作系统补丁、关闭对应服务,那自然是能够避免系统和应用受到侵害。但是,在通常情况下,尤其是当公司扩大规模的时候,服务器管理员意识到问题并采取措施的这段响应时间,已经足够病毒或者蠕虫进行大规模的传播了。

这时,防火墙的存在就很有必要了。一方面,防火墙可以迅速对全网的服务器进行保护,拒绝向高危端口发起的请求,如 Windows 中的 135、137 和 445 等,这也就是我们之前所说的“虚拟补丁”。另一方面,更加智能的防火墙,能够检测到整体流量中的异常变化,比如,突然出现了针对某个端口的大量请求,这就说明系统或者应用中很可能出现了新的漏洞,这时,防火墙可以产生报警甚至自动对异常的请求进行拦截,及时避免网络中的操作系统受到攻击。

2. 阻止非法的信息流动

在网络边界之间流动的数据,往往都会受到一定的规则约束。最著名的有中国的防火长城(Great Firewall)。防火长城的主要目的不是为了防止国外对中国发起网络攻击,而是根据法律法规,防止国内网民访问国外违法的数据信息。同样地,美国也存在类似的防火墙设备,比如:根据美国儿童网络保护法令(CHIPA),学校和图书馆的网络必须限制学生可以浏览的网页。

除了防止非法地获取数据,防火墙同样能够防止敏感数据的流出。比如,防火墙可以对部分关键词或者敏感词进行检测阻止其外流。如果数据安全做得好一些的公司,可以对公司内的全部数据打上标签,然后根据标签的安全等级对跨越安全边界的数据进行处理。

需要注意的是,防火墙能够提供的数据安全保护是有限的。原因在于,大部分防火墙都是用来处理较低层级的数据,且很多连接会对数据本身进行加密(VPN、HTTPS)。这就导致了防火墙实际能够看到的可识别数据并不多,拦截能力因此下降。

3. 限制可访问的服务和审计

防火墙作为安全策略的一部分,还可以帮助公司落地安全制度。公司所有对于网络方面的限制和要求,基本都可以在防火墙上进行实现。比如:限制外网开放的服务只能是 HTTP 服务,那么所有非 HTTP 的请求就会被拦截;再比如,防火墙也可以对带宽的使用进行限制,避免某个服务抢占全部的带宽资源。

除此之外,防火墙作为网络安全设备,它的日志功能通常比路由器等常规网络设备更加完备。因此,在网络攻击发生之后,我们需要进行事件调查时,防火墙日志是很关键的信息来源。

防火墙有哪些防御盲区?

我们知道,防火墙不仅是网络安全中很重要的组成部分,也是我们最为熟知的安全工具。但是,在安全领域中不存在绝对,所以防火墙对于某些攻击也同样无能为力。接下来,我会主要讲解防火墙不能防御的攻击手段,在了解这些攻击之后,我们才能提高对防火墙和网络安全的整体认识。

首先,防火墙只位于网络边界。因此,防火墙只能用来对跨越边界的请求进行检测和拦截。当请求通过后,后续发起的攻击请求对于防火墙来说,就是不可见的。比如,当黑客利用弱密钥,通过合法的 SSH 登录到服务器之后,就相当于穿透了防火墙的保护,之后黑客再通过 SSH 执行的命令,防火墙都无法检测和拦截。所以,防火墙不能防御已授权服务中的恶意攻击。

其次,尽管防火墙位于网络边界,但这并不意味着所有的请求都会经过防火墙。比如,直接通过物理网线接入到服务器,黑客就可以在不经过防火墙的情况下进入内网。在这种情况下,防火墙自然也起不到任何作用了。同样地,在网络内部发生的攻击行为,也不在防火墙的保护范围内。也就是说,防火墙不能防御不通过防火墙的访问。

最后,作为边界设备,防火墙自身其实是暴露在外界的。因此,防火墙会遭受到黑客的直接攻击。如果防火墙自身的操作系统存在缺陷,那么,黑客就能够直接攻击并控制防火墙,然后关闭防火墙的防护功能,轻松突破边界。正是因为如此,部分防火墙厂商会为防火墙设备专门设计和开发一个加固过的专用操作系统,以此来提高防火墙的安全性。

总结

好了,今天的内容讲完了。我们来一起总结回顾一下,你需要掌握的重点内容。

防火墙作为最基础的网络安全设备之一,广泛存在于各种网络边界上,是网络安全的第一道防线。

在业务相对简单时,我们可以通过 IP、端口和协议等参数,配置简单的黑白名单规则来阻挡恶意的网络请求;在业务逐渐复杂时,开放的端口协议变多,我们对防火墙的技术实现和配置复杂度都会有较高要求,需要由专业的人员或者团队来进行维护。

因此,尽管防火墙是我们最熟悉的安全设备,但实际上,防火墙是一个专业性较强的安全产品,开发或者运维人员一般不需要对其进行直接操作或者配置,具体的部署和配置工作都是交给防火墙厂商来完成和定期维护的。
在这里插入图片描述

思考题

最后,给你留一个思考题。

你可以检查一下你的服务器或者网络设备中,对外开放的端口有哪些。这些端口中,有哪些不需要对外开放,有哪些可以限制源 IP?你能否通过防火墙(或者路由器、Iptables 等)对这些端口进行限制呢?

欢迎留言和我分享你的思考和疑惑,也欢迎你把文章分享给你的朋友。我们下一讲再见!

下一讲

WAF:如何为漏洞百出的Web应用保驾护航?


推荐阅读
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 开发笔记:计网局域网:NAT 是如何工作的?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了计网-局域网:NAT是如何工作的?相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了在Mac上安装Xamarin并使用Windows上的VS开发iOS app的方法,包括所需的安装环境和软件,以及使用Xamarin.iOS进行开发的步骤。通过这种方法,即使没有Mac或者安装苹果系统,程序员们也能轻松开发iOS app。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 本文介绍了OkHttp3的基本使用和特性,包括支持HTTP/2、连接池、GZIP压缩、缓存等功能。同时还提到了OkHttp3的适用平台和源码阅读计划。文章还介绍了OkHttp3的请求/响应API的设计和使用方式,包括阻塞式的同步请求和带回调的异步请求。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Asp.net Mvc Framework 七 (Filter及其执行顺序) 的应用示例
    本文介绍了在Asp.net Mvc中应用Filter功能进行登录判断、用户权限控制、输出缓存、防盗链、防蜘蛛、本地化设置等操作的示例,并解释了Filter的执行顺序。通过示例代码,详细说明了如何使用Filter来实现这些功能。 ... [详细]
author-avatar
破晓晨曦
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有